package escalonador;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 *
 * @author admin
 */
public class EscalonadorSJF {

    private String id = "";
    private int wt;
    private int at;
    private int time;
    //private Processo pr = new Processo();
    private List<Processo> listProcessos = new ArrayList<Processo>();

    public void inicia() {

        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            
            System.out.println("Digite o ID do Processo");
            id = in.readLine();
            
            System.out.println("Digite o waiting time do Processo");
            wt = Integer.parseInt(in.readLine());
            
            System.out.println("Digite o arrival time do Processo");
            at = Integer.parseInt(in.readLine());

           
            //pr.setId(id);
            //pr.setWt(wt);
            //pr.setAt(at);

           // System.out.println(pr.getId() + " " + pr.getAt());
            

        } catch (IOException e) {
            System.out.println("IO Exception. Informe o valor novamente.");
        }

        
    }
    public void addProcesso(String id, int pt, int at){
        Processo pr = new Processo();
        pr.setId(id);
        pr.setPt(pt);
        pr.setAt(at);

        listProcessos.add(pr);
        
    }

    public Processo getProcessos(int cont){
        return listProcessos.get(cont);        
    }

    public int getQtdProc(){
        return listProcessos.size();
    }

    public void stepSJF(){
        /*
        boolean ehPrimeiro = true;
        for(int i = 0; i < listProcessos.size()-1; i++){
            String aux = listProcessos.get(i).getEstado();
            if(!aux.equals("")){ 
                ehPrimeiro = false;
            }
        }
        if(ehPrimeiro){
            //ordenar pelo arrival time, em caso de iguais, ordenar pelo processor time
        }

         */
        Collections.sort(listProcessos);
    }

    public void ordenaPrimeiraVez(){
        boolean estaOrdenado = false;
        while(!estaOrdenado){
            for(int i = 0; i < listProcessos.size() -1; i++){
                if(listProcessos.get(i).getAt() > listProcessos.get(i+1).getAt()){
                    Processo proc = listProcessos.get(i);
                    listProcessos.set(i, listProcessos.get(i+1));
                    listProcessos.set(i+1, proc);
                }
            }
        }
    }
}
